构建微服务的十大 Golang 框架和库 您所在的位置:网站首页 golang 框架排行 构建微服务的十大 Golang 框架和库

构建微服务的十大 Golang 框架和库

#构建微服务的十大 Golang 框架和库| 来源: 网络整理| 查看: 265

我使用这个库来管理命令应用程序,执行 runner 应用程序,初始化配置,并启动 Rest API。

基于 Cobra 的应用组织结构:

在 app/main.go 中:

在 app/cmd/root.go 中:

Cobra:https://github.com/spf13/cobra

2配置读取器 (spf13/viper)

Viper 是一个完整的 Go 应用配置解决方案。

Viper 可以读取以下内容:

JSON TOML YAML HCL INI envfile 以及Java 属性配置文件

示例 config/config.toml :

读取 config.go:

在 main.go 中使用 config 中的 value:

Viper:https://github.com/spf13/viper

3Web 框架 (labstack/echo)

高性能、极简主义的 Go Web 框架

安装:

示例:

4依赖注入 (uber-go/fx)

我发现这个库非常有用,你不需要生成任何东西。只是代码。非常模块化,层次清晰。

一个基于依赖注入的 Go 应用框架。

Uber-go/fx: https://github.com/uber-go/fx

5Swagger 生成器、UI 和验证

在 swagger 部分,我必须使用不同的 3 个库,因为我找不到任何一个库可以在一个库中包含 3 个库。

a. Swagger 生成器 (swaggo/swag)

Swag 将 Go 注释转换为 Swagger 文档 2.0。

Swag 将 Go 注释转换为 Swagger 文档 2.0。

我们已经为流行的 Go Web 框架 创建了各种插件。这使你可以快速地与现有的 Go 项目集成(使用 Swagger UI)。

支持的 Web 框架:

gin echo buffalo net/http

Swag 已经处理了你的 swagger 文档。所以你不再需要写 swagger.yml 或 swagger.json 。你需要做的就是写注释。这是一个例子:

swaggo/swag:https://github.com/swaggo/swag

b. Swagger UI (swaggo/echo-swagger)

因为我用的是 echo,所以我选择这个作为 swagger 的用户界面。

使用示例:

swaggo/echo-swagger:https://github.com/swaggo/echo-swagger

c. Swagger 验证 (go-swagger/go-swagger)

这个包包含了 Swagger 2.0(也就是 OpenAPI 2.0)的 golang 实现:它知道如何序列化和反序列化 swagger 规范。

安装:

键入此命令以验证:

输出:

go-swagger/go-swagger:https://github.com/go-swagger/go-swagger

6自定义记录器 (sirupsen/logrus)

Logrus 是一个适用于 Go(golang) 的结构化记录器,与标准库记录器完全 API 兼容。

示例:

sirupsen/logrus:https://github.com/sirupsen/logrus

7模拟生成器 (vektra/mockery)

Golang 的模拟代码自动生成器

安装:

生成模拟:

输出:

vektra/mockery:https://github.com/vektra/mockery

8迁移 (golang-migrate/migrate)

用 Go 编写的数据库迁移。作为 CLI 使用或作为库导入。

数据库驱动程序运行迁移:

PostgreSQL Redshift Ql Cassandra SQLite(todo #165) SQLCipher MySQL/MariaDB Neo4j MongoDB CrateDB(todo #170) Shell(todo #171) Google Cloud Spanner CockroachDB ClickHouse Firebird MS SQL Server

安装:

键入命令创建迁移文件:

键入命令运行迁移:

键入命令中断迁移:

golang-migrate/migrate:https://github.com/golang-migrate/migrate

9消息传递 (NSQ)

NSQ 拓扑:

NSQ 组件:

nsqlookupd (守护进程管理拓扑 / 路由) nsqd(守护进程管理接收、排队和传递消息) nsqadmin(nsq 的默认 Web UI)

docker-compose 示例:(nsqlookupd, nsqd, nsqadmin)

执行:

在 golang 中:

consume.go:

运行 consume.go:

publish.go:

运行 publish.go:

nsqio/go-nsq:https://github.com/nsqio/go-nsq

10SQL (jmoiron/sqlx)

sqlx 是一个库,它在 Go 的标准 database/sql 库上提供了一组扩展。

我喜欢 sqlx 的一点是它们可以进行结构扫描。快速而简单的使用。

结构扫描示例:

jmoiron/sqlx:https://github.com/jmoiron/sqlx

11额外附加

Go 例程分组 (sync/errgroup)

https://pkg.go.dev/golang.org/x/sync/errgroup

为 golang 生成流畅的 SQL (Masterminds/squirrel)。

https://github.com/Masterminds/squirrel

Golang Linter (golangci/golangci-lint)

https://github.com/golangci/golangci-lint

断路器 (gojek/heimdall)

https://github.com/gojek/heimdall

Go 工具生成标签 (fatih/gomodifytags)

https://github.com/fatih/gomodifytags

12总结

要建立应用程序,我们应该知道我们有什么特性,特别是如果我们想建立持续的应用程序和团队之间的合作。我建议有一个坚实的、可读性强的代码,这样在成为遗留代码之前(也许 5~10 年后),它可以更容易维护。

构建应用的 3 个关键:

简单设计(项目结构和依赖关系) 干净的代码(可读和可维护) 模块化(实心骨架和柔性骨架)

为了把这些库都包装起来,我有一个设计简单、代码干净的模板或骨架项目。请看:https://github.com/kecci/goion

作者介绍:

Kecci Kun,软件工程师。

https://keccikun.medium.com/top-10-framework-golang-library-to-build-microservice-391a2bb4c2cb

快狗打车的业务架构设计迭代实践 返回搜狐,查看更多



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有